package yunhe.dao;


import org.apache.ibatis.annotations.Param;

import yunhe.entity.*;

import java.util.List;


/**
 * Created by lzh on 2017/6/13.
 * 杩涘簱鐩稿叧鎿嶄綔
 */
public interface IStockMgrDao {
    /**
     * 鏌ヨ榛樿浠撳簱鐨勫簱瀛�
     *
     * @return 浠撳簱琛�
     */
    List<Inventory> searchInv();


    /**
     * 鏌ヨ鎵�鏈変粨搴�
     */
    public List<Storage> querySto();


    /**
     * 閫氳繃浠撳簱id鏌ヨ鏈粨搴撶殑搴撳瓨閲�
     *
     * @param stoId
     * @return
     */
    List<Inventory> searchInvBySto(String stoId);

    /**
     * 鏍规嵁鍟嗗搧鏌ュ簱瀛�
     *
     * @param proBarCode
     * @return
     */
    List<Inventory> searchInvByPro(String proBarCode);

    /**
     * 鎶ユ崯鎶ユ孩,鎻掑叆鎶ユ崯鎶ユ孩琛�
     */
//   void  insertToProLoss(@Param("param") Object[] param);


    /**
     * 鍐欏叆鍑哄簱鍗�
     *
     * @param sk
     * @return
     */
    int writeStockOut(StockOut sk);
    
    /**
     * 鍐欏叆鍏ュ簱鍗�
     * @param si
     * @return
     */
    int writeStockIn(StockIn si);

    /**
     * 鍐欏叆閿�鍞崟浠庡崟
     *
     * @param soa
     * @return
     */
    int writeStockOutApp(StockOutAppend soa);
   /**
   * 鍐欏叆鍏ュ簱鍗曚粠琛�
   * @param sia
   * @return
   */
    int writeStockInApp(StockInAppend sia);
    
    /**
     * 璁剧疆棰勮涓婇檺鍊�
     *
     * @param topLimit   涓婇檺鍊�
     * @param stoId      浠撳簱Id
     * @param proBarCode 鍟嗗搧鏉＄爜
     * @return
     */
    int setInvTopLimit(@Param("topLimit") int topLimit, @Param("stoId") String stoId, @Param("proBarCode") String proBarCode);

    /**
     * 璁剧疆搴撳瓨棰勮涓嬮檺鍊�
     *
     * @param buttLimit  涓嬮檺鍊�
     * @param stoId      浠撳簱Id
     * @param proBarCode 鍟嗗搧鏉＄爜
     * @return
     */
    int setInvButtLimit(@Param("buttLimit") int buttLimit, @Param("stoId") String stoId, @Param("proBarCode") String proBarCode);

    /**
     * 鍐欏叆杞簱璁板綍琛�
     *
     * @param it
     * @return
     */
    int transInv(StockTransfer it);

    /**
     * 鏇存柊杞簱鐘舵��
     *
     * @param stockTransId 杞簱鍗曠紪鍙�
     * @param transSta     鐘舵��
     * @return
     */
    int updateTransSta(@Param("stockTransId") int stockTransId, @Param("transSta") int transSta);

    /**
     * 鏇存柊搴撳瓨鐘舵��
     *
     * @param proBarCode
     * @param stoId
     * @param num
     * @return
     */
    int updateInv(@Param("proBarCode") String proBarCode, @Param("stoId") String stoId, @Param("num") int num);

    
    /**
     * 鏍规嵁浠撳簱id鏌ヨ鎹熺泭鍟嗗搧
     *
     * @return
     */
    List<Taking> queryProLossPro(@Param("takId") String takId);

    /**
     * 鏍规嵁鐩樼偣鍗曞彿鍜屼粨搴搃d,鍟嗗搧鏉″舰鐮佹煡璇㈠晢鍝佺洏鐐逛俊鎭�
     *
     * @param stoId
     * @param proBarCode
     * @return
     */
    List<Taking> queryProLossByStoAndPro(@Param("stoId") String stoId,@Param("takId") String takId, @Param("proBarCode") String proBarCode);

    /**
     * 鏍规嵁浠撳簱鍚嶈幏鍙栦粨搴搃d
     *
     * @param stoName
     * @return
     */
    List<Storage> queryStoByName(@Param("stoName") String stoName);

    /**
     * 鎶ユ崯鎶ユ孩鎻掑叆鎹熺泭琛�
     *
     * @param params
     */
    int insertToProLoss(@Param("param") Object[] params);

    /**
     * 鏌ヨ鎵�鏈夌殑閲囪喘淇℃伅
     *
     * @return
     */
    List<Purchase> quryAllPurchaseMsg();

    /**
     * 鎻掑叆鐩樼偣浠庤〃淇℃伅
     *
     * @param params
     * @return
     */
    int insertIntoTaking(@Param("param") Object[] params);
    
    /**
     * 鏍规嵁鐩樼偣鍗曞彿浠ュ強浠撳簱id鏌ヨ鐩樼偣淇℃伅
     * @param takId
     * @param stoid
     * @return
     */
    List<Taking> queryProByStoTakId(@Param("takId") String takId,@Param("stoid") String stoid);


    /**
     * 鏌ヨ鏃堕棿鏈�杩戠殑鐩樼偣鍗�
     * @return
     */
    List<Taking> queryLatestTimeTak();
    
    /**
     * 鏇存柊搴瓨鍏ュ韩
     * @param proBarCode
     * @param stoId
     * @param num
     * @return
     */
    int updateInInv(@Param("proBarCode") String proBarCode, @Param("pursId") String pursId, @Param("num") int num);
    /**
     * 查询所有的入库信息
     * @return
     */
    
    List<StockInAppend> queryAllStockInAppend();
    /**
     * 查询所有的出库单信息
     * @return
     */
    List<StockOutAppend> queryAllStockOutAppend();
    /**
     * 查询所有的商品信息
     * @return
     */
    Product searchProBy(String probarcode);
    /**
     * 根据时间查询入库信息
     * @param date1
     * @param date2
     * @return
     */
    List<StockInAppend> queryStockInBydate(@Param("date1") String date1,@Param("date2") String date2);
    
    /**
     * 根据时间查询出库信息
     * @param date1
     * @param date2
     * @return
     */
    List<StockOutAppend> queryStockOutBydate(@Param("date1") String date1, @Param("date2") String date2);
    

}
